package simbolos;

import java.util.Hashtable;

import lexico.Token;
import semantico.Identificador;


/**
 * 'Ambiente' e' outro termo para a colecao de tabelas
 * de simbolos que sao relevantes em determinado ponto
 * no programa.
 * @author Cefanys
 */
public class Ambiente {

	private Hashtable<String, Identificador> tabela;
	private Ambiente anterior;
	
	public Ambiente(Ambiente novoAmbiente){
		tabela = new Hashtable<String, Identificador>();
		anterior = novoAmbiente;	
	}
	
	public void inserirSimbolo(Token palavra, Identificador identificador){
		tabela.put(palavra.toString(), identificador);
	}
	
	public Identificador get(Token palavra){
		for (Ambiente a = this; a != null; a = a.anterior) {
			Identificador idEncontrado = (Identificador)(a.tabela.get(palavra.toString()));
			if(idEncontrado != null){
				return idEncontrado;
			}
		}
		return null;
	}
}
